home *** CD-ROM | disk | FTP | other *** search
- code Segment Para
- Assume cs:code, ds:code
- org 100h
- park proc far
- jmp init
- x1coff dw 0
- x1cseg dw 0
- x13off dw 0
- x13seg dw 0
- parked dw 0
- count dw 0
- value dw 0
- flag dw 0
- x1cint: push ax
- push bx
- push cx
- push dx
- push ds
- mov ax,cs
- mov ds,ax
- xor ax,ax
- cmp parked,ax
- jne x1cout
- dec word ptr count
- cmp count,ax
- jne x1cout
- cli
- mov ax,1
- mov parked,ax
- mov flag,ax
- mov ax,value
- mov count,ax
- sti
- mov ah,08
- mov dx,80h
- int 13h
- mov dx,80h
- inc ch
- mov ax,0401h
- int 13h
- mov ah,08
- mov dx,81h
- int 13h
- mov dx,81h
- inc ch
- mov ax,0401h
- int 13h
- xor ax,ax
- mov flag,ax
- x1cout: pop ds
- pop dx
- pop cx
- pop bx
- pop ax
- jmp dword ptr cs:[x1coff]
- x13int: push ax
- push ds
- mov ax,cs
- mov ds,ax
- cmp flag,1
- je x13in1
- mov ax,value
- mov count,ax
- xor ax,ax
- mov parked,ax
- x13in1: pop ds
- pop ax
- jmp dword ptr cs:[x13off]
- dw 0
- table dw 0
- init: xor ax,ax
- mov parked,ax
- mov bx,80h
- mov al,[bx]
- cmp al,0
- jne init1
- int 21h
- init1: inc bx
- mov al,[bx]
- cmp al,32
- je init1
- cmp al,13
- jne init3
- init2: xor ax,ax
- int 21h
- init3: cmp al,49
- jb init2
- cmp al,57
- ja init2
- lea dx,mess
- mov cx,ax
- mov ah,09
- int 21h
- mov ax,cx
- xor ah,ah
- mov bx,0fh
- and ax,bx
- mov dx,1091
- mul dx
- mov value,ax
- mov count,ax
- cli
- push es
- xor ax,ax
- mov es,ax
- mov bx,76
- mov ax,es:[bx]
- mov x13off,ax
- mov ax,offset x13int
- mov es:[bx],ax
- inc bx
- inc bx
- mov ax,es:[bx]
- mov x13seg,ax
- mov ax,cs
- mov es:[bx],ax
- xor ax,ax
- mov flag,ax
- mov es,ax
- mov bx,112
- mov ax,es:[bx]
- mov x1coff,ax
- mov ax,offset x1cint
- mov es:[bx],ax
- inc bx
- inc bx
- mov ax,es:[bx]
- mov x1cseg,ax
- mov ax,cs
- mov es:[bx],ax
- pop es
- sti
- mov dx,offset table
- int 27h
- mess db 'Alpha Computer Service timed parker is activated'
- db 13,10,'for hard disks C and, if present, D'
- db 13,10,'$'
- park endp
- code ends
- end park